<?php
namespace app\index\validate;

/**
 * 引入验证器基类
 */
use think\Validate;

/**
 * 用户验证器类
 * 负责用户相关数据的验证规则和错误提示
 */
class User extends Validate
{
    /**
     * 验证规则定义
     * 设置各字段的验证规则
     * 
     * @var array
     */
    protected $rule = [
        'username' => 'require|length:3,20',
        'password' => 'require|length:6,20',
        'old_password' => 'require|length:6,20',
        'new_password' => 'require|length:6,20|different:old_password',
        'confirm_password' => 'require|confirm:new_password',
    ];

    /**
     * 错误提示信息
     * 定义验证失败时的错误提示
     * 
     * @var array
     */
    protected $message = [
        'username.require' => '用户名不能为空',
        'username.length' => '用户名长度必须在3-20个字符之间',
        'username.unique' => '该用户名已被使用',
        'password.require' => '密码不能为空',
        'password.length' => '密码长度必须在6-20个字符之间',
        'old_password.require' => '原密码不能为空',
        'old_password.length' => '原密码长度必须在6-20个字符之间',
        'new_password.require' => '新密码不能为空',
        'new_password.length' => '新密码长度必须在6-20个字符之间',
        'new_password.different' => '新密码不能与原密码相同',
        'confirm_password.require' => '确认密码不能为空',
        'confirm_password.confirm' => '两次输入的密码不一致',
    ];

    /**
     * 验证场景定义
     * 针对不同操作设置不同的验证规则
     * 
     * @var array
     */
    protected $scene = [
        'register' => ['username|unique:mb_user', 'password'],
        'login' => ['username|require|length:3,20', 'password'],
        'change_password' => ['old_password', 'new_password', 'confirm_password'],
    ];
} 